# openai_api.py
from openai import OpenAI
from classes import Config
import logging
from rich.console import Console
from rich.spinner import Spinner

console=Console()

logger = logging.getLogger(__name__)

def call_openai_api(prompt: str, config: Config) -> str:
    """
    调用 OpenAI API 获取对话结果。使用实例化的方式调用。
    非实例化的方式已经过时
    
    :param prompt: 提示词。
    :param config: 配置config对象，包含 API 密钥等。
    :return: 对话结果字符串。
    """
    if prompt == "":
        return "请输入有效的提示词。"
    
    if not config.api_key :
        return "请设置有效的 API 密钥。"
    elif not config.api_url:
        return "请设置有效的 API URL。"
    
    
    try:  
        client=OpenAI(api_key=config.api_key, base_url=config.api_url)

        print("正在调用OpenAI API...",config.system_prompt)

        with console.status("[cyan]正在处理...", spinner="earth"):
            response = client.chat.completions.create(
                model=config.model,
                messages=[{"role":"system","content":config.system_prompt},
                        {"role": "user", "content": prompt}],
                stream=config.stream,
            )
        
    except Exception as e:  
        raise e
        return "Error: " + str(e)
        
    # finally:  
    #     client.close()
        
    return response.choices[0].message.content